---
title: 基本架构
description: 一个键值型数据库包含什么
---

通过构建一个简单的键值数据库 SimpleKV,对 Redis 形成全局的认知。

开始构造 SimpleKV 时，首先就要考虑里面可以存什么样的数据，对数据可以做什么样的操作，也就是数据模型和操作接口。

对于 Redis 来说，只有搞懂它的数据模型和操作接口，才能明白它能做什么，不能做什么？

## 可以存那些数据？
对于键值型数据库而言，基本的数据模型时 key-value 模型。在 SimpleKV 中，key 是 String 类型，而 value 可以是复杂类型。

不同的键值对数据库支持的 key 类型一般差异不大， value 类型有着较大差异。

在对键值对数据库选型时，一个重要的考虑因素是它支持的 value 类型。

:::tip
Memcached 支持的 value 类型仅为 String 类型，而 Redis 支持的 value 类型包括了 String、哈希表、列表、集合等。Redis 能够在实际业务场景中得到广泛的应用，就是得益于支持多种类型的 value。
:::
从使用的角度来说，不同 value 类型的实现，因为其不同的数据结构在性能、空间效率上也存在着差异。

## 可以对数据做什么操作
SimpleKV 是一个简单的键值数据库，因此，基本操作无外乎就是增删改查。

* PUT: 新写入或更新一个 key-value 对；
* GET： 根据一个 key 读取相应的 value 值；
* DELETE： 根据一个 key 删除整个 key-value 对

:::tip
有些键值数据库的新写/更新操作叫 SET .新写入和更新虽然是用一个操作接口，但在实际执行时，会根据 key 是否存在执行相应的新写或 更新流程。
:::

在实际的业务场景中，还会存在这种情况：查询一个用户在一段时间内的访问记录。这种操作在键值数据库种属于 SCAN 操作，即**根据一段key的范围返回相应的 value 值。**

此外，例如在黑名单应用中，需要判断某个用户是否存在。需要将该用户 ID 作为 key，增加 EXISTS 操作接口。

因此，**PUT/GET/DELETE/SCAN 是一个键值数据库的基本操作集合**。


